// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.mapper;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import com.liuxinlong.modules.entity.FileManage;
import com.baomidou.mybatisplus.mapper.BaseMapper;

/**
 * 文件管理mapper
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2022年2月22日
 */
public interface FileManageMapper extends BaseMapper<FileManage> {
	/**
	 * 查询文件管理列表
	 * 
	 * @param queryParam 查询条件
	 * @return 文件管理列表
	 */
	 List<FileManage> pageFileManageList(@Param("queryParam") Map<String, Object> queryParam);

	/**
	 * 查询文件管理记录条数
	 *
	 * @param queryParam 查询参数
	 * @return 文件管理记录条数
	 */
	 int getFileManageCount(@Param("queryParam") Map<String, Object> queryParam);

	/**
	 * 查询业务相关文件管理列表
	 * 
	 * @param businessId 业务id
	 * @return 文件管理列表
	 */
	 List<FileManage> queryFileManageList(String businessId);

	/**
	 * 批量修改文件关联业务id
	 *
	 * @param fileIds    文件id
	 * @param businessId 业务id
	 */
	void batchUpdateBusinessFile(@Param("fileIds") String[] fileIds, @Param("businessId") String businessId);

	/**
	 * 获取文件map
	 *
	 * @param businessType 业务类型
	 * @return 文件map
	 */
	@MapKey("id")
	Map<String, Map<String, String>> getFileMap(@Param("businessType") int businessType);

	/**
	 * 获取文件map
	 *
	 * @param fileIdList 文件id
	 * @return 文件map
	 */
	@MapKey("id")
	Map<String, Map<String, Object>> getFileMapByIds(@Param("fileIds") Set<String> fileIdList);

	/**
	 * 获取文件map
	 *
	 * @param fileIdList 文件id
	 * @return 文件map
	 */
	@MapKey("docId")
	Map<String, Map<String, Object>> getFileMapByCloudIds(@Param("fileIds") Set<String> fileIdList);

	/**
	 * 查询文件管理列表
	 *
	 * @param fileIds 业务id
	 * @return 文件管理列表
	 */
	List<FileManage> queryFileManageListByIds(@Param("fileIds")List<String> fileIds);

	/**
	 * 批量修改文件状态
	 *
	 * @param businessId 业务id
	 */
	void batchInvalidFile(@Param("businessId")String businessId);

	/**
	 * 获取文件map
	 *
	 * @param businessType 业务类型
	 * @return 文件map
	 */
	@MapKey("id")
	Map<String, Map<String, String>> getFilePathMap(@Param("businessType")int businessType);

	/**
	 * 获取待处理文件列表
	 *
	 * @return 待处理文件列表
	 */
	List<FileManage> getPendingFiles();

	/**
	 * 获取未关联文件列表
	 *
	 * @return 未关联文件列表
	 */
	List<FileManage> getJunkFiles();

	/**
	 * 根据业务类型获取文件信息
	 *
	 * @param businessType 业务类型
	 * @return 文件信息列表
	 */
	List<FileManage> queryFileManageListByType(@Param("businessType") int businessType);
}
